home *** CD-ROM | disk | FTP | other *** search
/ UpTime Volume 2 #9 / utv2n9s1.d64 / becker basic < prev    next >
Encoding:
Text File  |  1988-01-01  |  12.7 KB  |  165 lines

  1. @@
  2.  
  3.              BeckerBASIC
  4.  
  5.       Reviewed by Jon Perregaux
  6.  
  7.  
  8.    Copyright 1989 by Jon Perregaux
  9.          All Rights Reserved
  10.  
  11.              Published by
  12.       Softdisk Publishing, Inc.
  13.  
  14.  
  15.  
  16.      For a lot of people, BASIC is a breakthrough computer language.  It bridges the gap between humans and computers by allowing the user to communicate through English commands and familiar mathematical formulae.  Understanding binary math, stacks and operands becomes unnecessary.  It is no wonder so many personal computers come packaged with BASIC, either on disk or installed in ROM.
  17.  
  18.      One of the beauties of BASIC on the Commodore 64 and 128 is that it can be extended.  New commands can be added to handle machine specific tasks such as graphics and sound.  Structured programming routines may also be added, all while preserving - and sometimes even enhancing - the original BASIC commands.
  19.  
  20.      BeckerBASIC is just such an enhancement.  Like Simon's BASIC, BeckerBASIC builds upon the original BASIC 2.0 language of the C64 by adding special graphics and sound commands plus structured programming, debugging and specialized disk access commands - 273 in all.  But unlike Simon's BASIC, BeckerBASIC takes advantage of Commodore's new adopted operating system standard: GEOS.
  21.  
  22.      Yes, you read it right.  BeckerBASIC supports GEOS (but not GEOS 128).  Through pseudo-English commands, BeckerBASIC gives you complete control over pull-down menus, dialog boxes, line and box drawing, fill patterns, colors, sprites, sound and printing on a hi-res screen.
  23.  
  24.      The package also features pull-down menu and dialog box construction sets, a GEOS converter/icon editor that converts BeckerBASIC programs to GEOS format, and a sprite editor.
  25.  
  26.      While this alone might prompt some people to go right out and buy BeckerBASIC from their nearest software store, there's more to consider.  After reading the rest of this review, I believe you will find BeckerBASIC just as disappointing as I did.
  27.  
  28.  
  29. %cTHE BECKERBASIC ENVIRONMENT
  30.  
  31.      BeckerBASIC comes on a disk, not a cartridge.  Because GEOS eats up roughly half the available 64K memory of the C64, there's not much room left for BeckerBASIC PLUS your program PLUS hi-res screen graphics PLUS predefined pull-down menus and dialog boxes PLUS variables.
  32.  
  33.      With GEOS memory-resident, BeckerBASIC gives you 15,747 bytes free for BASIC text and variables.  It is possible to run BeckerBASIC without GEOS by inserting the BeckerBASIC disk and typing LOAD "DBL",8,1.  Doing this gives you 24,129 BASIC bytes free but no functional GEOS commands.  To get around these memory limitations, BeckerBASIC allows program overlays (also known as chaining).
  34.  
  35.      Because BeckerBASIC must squeeze itself into memory already occupied by GEOS and still give you room to develop a program, the interpreter is broken down into three parts.  The first is called the Input System.  All programs are written and edited just as in normal C64 BASIC on a normal text screen with a READY prompt.  Programs can also be run in this mode, as long as they do not use GEOS-specific commands.
  36.  
  37.      Special programming aids are included in the Input System.  The PRENUMBER command will renumber your program lines but it will NOT recalculate GOTO and GOSUB statements!  This is because BeckerBASIC allows calculated GOTOs (GOTO A+2*10) and labels (GOSUB "PRINTSCORE").  The inclusion of calculated GOTOs is nice, but the price of a practically useless renumbering command is too high.
  38.  
  39.      BeckerBASIC also offers automatic line numbering, program merging, deleting a range of lines, unNEW, predefined function keys and a variable dump command.  Commodore DOS is accessable through BASIC 7.0-like commands such as DIR, DSCRATCH, DHEADER and more.
  40.  
  41.      Like most of the commands in BeckerBASIC, the new SAVE and LOAD commands are weighed down by too many unneeded characters.  To save, you must type DSAVEB "program name".  The save-with-replace version avoids the "@0:" bug entirely but you have to type DCSAVEB "program name".
  42.  
  43.      One novel aspect of the new SAVE command is that it can save any range of lines to disk.
  44.  
  45.      LOAD becomes DLOADB.  There is a special load-and-run version, too: DRLOADB.  Still, I prefer RUN "program name" from BASIC 7.0, which saves four keystrokes.
  46.  
  47.      There are also BLOAD and BSAVE equivalents for manipulating memory contents.  These are DLOADM, DLOADAM (relocatable load), DSAVEM and DCSAVEM (save-with-replace).  I like BLOAD/BSAVE better.
  48.  
  49.  
  50.  
  51. %cTHE TESTING SYSTEM
  52.  
  53.      Once a program is written and saved, you may try it out by switching to the Testing System.  With GEOS installed, just press CTRL-COMMODORE together.  GEOS turbo-loads the testing module into memory and brings up a text-screen menu.  From here you may either run the program in memory, return to the Input System, or return to the deskTop.  (Without GEOS installed, there is no way to access the Testing System module.)
  54.  
  55.      If there is an error during run-time, BeckerBASIC informs you of this and asks if you would like to return to the Input System.  If you do, the Input module will re-load and the program error will be described on-screen.  If you use the ERRSHOWON command, the line will be listed and the error highlighted in reverse video.
  56.  
  57.      During program development, there will be a great deal of switching between the Input and Testing modules.  Although the GEOS diskTurbo lessens the delay, it is still highly distracting.  It really is too bad that BeckerBASIC does not support the GEOS RAMdisk.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. %cTHE RUN-ONLY SYSTEM
  66.  
  67.      This third module allows royalty-free distribution of any BeckerBASIC programs you may write.  All that is required to run your program is this Run-only module and your program on one disk.  If you convert your BASIC program to GEOS format, all any user has to do is double-click your program's icon from the GEOS deskTop to run it.
  68.  
  69.      The support for GEOS promised by BeckerBASIC is not as complete as you might think.  The manual makes this quite clear: "BeckerBASIC programs only LOOK like GEOS applications; they really don't run the same as GEOS applications."
  70.  
  71.      Here are some examples of BeckerBASIC's GEOS limitations...
  72.  
  73.    {$fa} You can change the colors of the GEOS screen but as soon as you activate a pull-down menu or dialog box, the screen colors instantly change back to standard GEOS grey with a black border and a blue arrow.
  74.  
  75.    {$fa} BeckerBASIC does not support an on-screen arrow at all times.
  76.  
  77.    {$fa} Pull-down menus in BeckerBASIC don't act like real GEOS pull-down menus.  When a menu bar is activated with PDMENU, your arrow appears and becomes restricted to the boundaries of the main menu bar and any sub-menus you may pull down.  When you click on an item within a sub-menu, it blinks and then the entire menu bar vanishes along with your arrow!
  78.  
  79.    {$fa} When a dialog box is activated, the pointer arrow always appears in the upper left-hand corner of the screen.  There is no way to defeat this.
  80.  
  81.    {$fa} The use of icons is not supported in any way.
  82.  
  83.    {$fa} The GEOS diskTurbo is not used except when loading the interpreter modules.  The GEOS RAMdisk cannot be used by BeckerBASIC.
  84.  
  85.    {$fa} You may only use the BSW system font.
  86.  
  87.    {$fa} Desk Accessories are not supported by BeckerBASIC.
  88.  
  89.    {$fa} BeckerBASIC does not allow support for creating VLIR data files, nor does it give access to GEOS DOS.
  90.  
  91.    {$fa} There is no support for outputting graphics to the printer, only standard printed text.
  92.  
  93.      Another fault with BeckerBASIC is its excessive use of commands that are positively cluttered with extraneous characters.  Some of my favorites are BSCASSCW and ASCBSCW (for converting ASCII to GEOS and back), DRLRECORD (access a relative file record), HRGDCOL (background color), HRPTCOL (point color), HRGTCOL (returns current hi-res colors), MBEXCOL and MBGTEXCL (for setting sprite multicolors).  I wonder how those commands are supposed to be pronounced?
  94.  
  95.      Fortunately, BeckerBASIC's RENCOM command lets you change any command name to whatever you like and then save the new command table to disk.
  96.  
  97.      Designing pull-down menus and dialog boxes is done through a pair of construction programs written in BeckerBASIC.  Designing these GEOS gadgets can be quite demanding since you are working only with coordinates.  Only after you enter everything will the program show you what you have and allow you to briefly interact with your menu or dialog box.
  98.  
  99.      When you select an item from a menu or click on a dialog box button, the text screen reappears and asks if you like what you made.  Too bad there's a bug that makes both programs skip over this prompt 95% of the time and start asking for a filename.
  100.  
  101.  
  102.  
  103.  
  104. %cA POWERFUL NEW BASIC
  105.  
  106.      Underneath these problems, however, lies a very powerful BASIC interpreter.  For starters, the use of labels for GOTO and GOSUB statements is something Commodore should have incorporated long ago.
  107.  
  108.      IF/THEN has been extended with ELSE and ENDIF.  ENDIF takes some getting used to since IF/THEN won't work without it.  If you use IF/THEN without ENDIF, a ?CONSTRUCT NOT CLOSED error message will appear.
  109.  
  110.      A brand-new addition is SELECT, CASE, OTHER and ENDSEL commands.  SELECT/ENDSEL is a clever variation of the IF/ENDIF structure that looks like this:
  111.  
  112. 10 "start": input "enter the month as a number";x
  113. 20 select x
  114. 30 case 1: m$="january"
  115. 40 case 2: m$="february"
  116.    .
  117.    .
  118.    .
  119. 130 case 11: m$="november"
  120. 140 case 12: m$="december"
  121. 150 other print "no such month!": goto "start"
  122. 160 endsel
  123. 170 print m$
  124.  
  125.      Users of BASIC 7.0 on the C128 will recognize DO/WHILE/ENDDO and probably also notice that UNTIL cannot be used.  There is also REPEAT/UNTIL (no relation to DO/ENDDO) and LOOP/LPEXITIF/ENDLOOP.  BASIC 7.0 offers a more convenient DO/LOOP, with freely interchangable WHILE, UNTIL and EXIT commands and no need for an ENDDO statement.
  126.  
  127.      From Pascal comes the PROCEDURE command, with related PROCEND and CALL statements.  This is used to set up an isolated subroutine that uses its own variables without interfering with variables used by the main program.  For example:
  128.  
  129. 1000 procedure "tempconvert", (f;c$)
  130. 1010 c=f-32*5/9: 'convert fahrenheit to celsius'
  131. 1020 c$=str$(c): 'convert to string variable'
  132. 1030 procend
  133.  
  134.      Line 1000 defines a procedure and gives it a label to be used by the CALL statement.  Between the parenthesis is the variable list; variables to the left of the semicolon accept values passed to the procedure while variables to the right hold values which are passed back to the main program.
  135.  
  136.      Line 1010 and 1020, the heart of the procedure, converts the Fahrenheit temperature to Celsius and turns it into a string (C$).  (REM statements can be replaced with apostrophes or quotes in BeckerBASIC.)  Line 1030 defines the end of the procedure routine.
  137.  
  138.      Using a predefined procedure is easy.  For example, to convert a Fahrenheit temperature to Celsius, just put this in the program:
  139.  
  140. 10 input "what's the temperature in fahrenheit";x
  141. 20 call "tempconvert",(x;x$)
  142. 30 print "the temperature is " x$ "celsius."
  143.  
  144.      Notice in this routine that there is no mention of variables F, C or C$, which are used in the procedure subroutine.  There is no need.  The CALL statement in line 20 places the value of X in procedure variable F, while the procedure later passes the value of C$ into variable X$.  Variables F, C and C$ are totally contained within the procedure.  If the main program already uses these variables, there is no conflict!
  145.  
  146. %cIS BECKERBASIC A BETTER BASIC?
  147.  
  148.      Berkeley Softworks is still developing geoBASIC, so at present there is really nothing to compare BeckerBASIC to.  It handles GEOS gadgets rather clumsily, but excels at handling hi-res plotting.  The BASIC commands themselves are often hard to remember, but can be changed to anything you like - just remember to load the new command table each time you use BeckerBASIC.  The structured programming commands are especially nice but lack BASIC 7.0's ease of use and force you to use statements like ENDIF and ENDLOOP.
  149.  
  150.      With BeckerBASIC comes a very well-organized manual that describes every function quite well.  There are dozens of examples of BeckerBASIC programming, each highly readable and easy to follow.
  151.  
  152.      Everything is nicely located and cross-referenced by a complete table of contents, seven appendices and an index.  There is even an appendix for referencing commands that you have renamed with RENCOM.
  153.  
  154.      As far as this reviewer is concerned, BeckerBASIC is less than a joy to work with.  It is certainly a far cry from the icon-oriented geoBASIC promised by Berkeley Softworks.  While there are many admirable features, I think I'll stick with good old BASIC 7.0 on my C128 and leave the GEOS programming to the professionals.
  155.  
  156.  
  157. "BeckerBASIC"
  158. (GEOS v1.2+ recommended; not compatable with GEOS 128)
  159. Suggested retail: $49.95
  160.  
  161. Abacus Software
  162. P.O. Box 7211
  163. Grand Rapids, MI 49510
  164. (616) 241-5510
  165.